package cn.tedu.charging.device.startup;

import cn.tedu.charging.device.dao.repository.StationCacheRepository;
import cn.tedu.charging.device.dao.repository.StationRepository;
import cn.tedu.charging.device.pojo.po.StationPO;
import cn.tedu.charging.device.service.DeviceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.List;

@Slf4j
@Component
public class StationDataInit implements ApplicationRunner {

    /**
     * 理解Bean的生命周期
     * https://blog.csdn.net/weixin_40382222/article/details/140338443
     */
    @PostConstruct
    public void init(){
        log.debug("PostConstruct#init 被调用了");
    }


 /*   @Autowired
    private StationRepository stationRepository;

    @Autowired
    @Qualifier("GeoAndString")
    private StationCacheRepository stationCacheRepository;*/

    @Autowired
    private DeviceService deviceService;


    /**
     * https://blog.csdn.net/m0_46459413/article/details/132322256
     * @param args
     * @throws Exception
     */
    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.debug("StationDataInit#run 被调用了");
        log.debug("缓存预热，在项目启动的时候，从数据库查询场站信息");
        List<StationPO> stationPOS = deviceService.getAllStation();
        log.debug("缓存预热，在项目启动的时候，从数据库查询场站信息:{}",stationPOS);
        log.debug("缓存预热，在项目启动的时候，将场站信息写入Redis");
        deviceService.save(stationPOS);
        log.debug("缓存预热，在项目启动的时候，将场站信息写入Redis:{}",stationPOS);
    }
}
